home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / GAS_1_38.ARJ / STRSTR.C < prev    next >
C/C++ Source or Header  |  1989-03-01  |  1KB  |  50 lines

  1. /* strstr - find first occurrence of wanted in s
  2.    Copyright (C) 1989, Free Software Foundation.
  3.  
  4. This file is part of GAS, the GNU Assembler.
  5.  
  6. GAS is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GAS is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GAS; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.    
  20.  
  21.  
  22. #define CONST
  23. #define SIZET int
  24.  
  25. #define    NULL    0
  26.  
  27. char *                /* found string, or NULL if none */
  28. strstr(s, wanted)
  29. CONST char *s;
  30. CONST char *wanted;
  31. {
  32.     register CONST char *scan;
  33.     register SIZET len;
  34.     register char firstc;
  35.     extern int strcmp();
  36.     extern SIZET strlen();
  37.  
  38.     /*
  39.      * The odd placement of the two tests is so "" is findable.
  40.      * Also, we inline the first char for speed.
  41.      * The ++ on scan has been moved down for optimization.
  42.      */
  43.     firstc = *wanted;
  44.     len = strlen(wanted);
  45.     for (scan = s; *scan != firstc || strncmp(scan, wanted, len) != 0; )
  46.         if (*scan++ == '\0')
  47.             return(NULL);
  48.     return(scan);
  49. }
  50.